package com.xbongbong.pro.aiassistant.service;

import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.pro.domain.entity.AiAssistantEntity;
import com.xbongbong.pro.domain.entity.AiAssistantHistoryEntity;
import com.xbongbong.pro.history.pojo.AiAssistantHistoryPojo;
import com.xbongbong.pro.smartsettings.pojo.SsHistoryValidPojo;
import com.xbongbong.pro.smartsettings.pojo.dto.SmartStrategyRabbitMqDTO;

import java.util.List;
import java.util.Map;

/**
 * @description: 智能助手记录
 * @Author: hongxiao
 * @date: 2019-05-09 20:27
 * @since v1.0
 */
public interface SsHistoryService {
    /**
     * 获取智能助手有效记录列表
     * 
     * @param rabbitMqDTO 入参：智能助手列表
     * @param dataIdsMap 符合触发条件的数据ids
     * @param waitInvalidIdsMap 待失效数据ids{smartId: [dataId1,dataId2]}
     * @param waitInvalidList 待失效数据列表{smartId: [historyEntity1, historyEntity2]}
     * @param workReportValidListMap 工作报告有效数据列表{smartId: [historyEntity1, historyEntity2]}
     * @return
     * @throws 
     * @author hongxiao
     * @date: 2019-05-10 15:48
     * @since v1.0
     * @version v1.0
     */
    List<SsHistoryValidPojo> getValidHistoryList(SmartStrategyRabbitMqDTO rabbitMqDTO, Map<Long, List<Long>> dataIdsMap,
                         Map<Long, List<Long>> waitInvalidIdsMap, Map<Long, List<AiAssistantHistoryEntity>> waitInvalidList,
                                                         Map<Long, List<AiAssistantHistoryEntity>> workReportValidListMap);

    /**
     * 获取每个智能助手对应的执行次数
     * @param rabbitMqDTO
     * @param dataIdsMap
     * @return
     * @throws XbbException
     */
    AiAssistantHistoryPojo getTriggerNum(SmartStrategyRabbitMqDTO rabbitMqDTO, Map<Long, List<Long>> dataIdsMap);
    /**
     * 处理待失效数据
     *
     * @param list 记录列表
     * @param dataIdsMap 有效数据ids:{smartId: [dataId1,dataId2]}
     * @return
     * @throws
     * @author hongxiao
     * @date 2019-08-24 15:45
     * @since v1.0
     * @version v1.0
     */
    void handleWaitInvalidHistory(List<SsHistoryValidPojo> list, Map<Long, List<Long>> dataIdsMap);
    /**
     * 获取需要添加的记录列表
     *
     * @param dataIds 数据ids
     * @param aiAssistantEntity 智能助手实体
     * @return
     * @throws
     * @author hongxiao
     * @date: 2019-05-11 11:10
     * @since v1.0
     * @version v1.0
     */
    List<AiAssistantHistoryEntity> getAddHistoryList(List<Long> dataIds, AiAssistantEntity aiAssistantEntity);
}
